home *** CD-ROM | disk | FTP | other *** search
/ Internet Surfer 2.0 / Internet Surfer 2.0 (Wayzata Technology) (1996).iso / pc / text / mac / faqs.114 < prev    next >
Encoding:
Text File  |  1996-02-12  |  28.6 KB  |  625 lines

  1. Frequently Asked Questions (FAQS);faqs.114
  2.  
  3.  
  4.  
  5. Cristoph reports that Dell V.4 can be object-patched successfully to fix this.
  6. I'm told that the offending 11c97 is at exactly the same address in the
  7. Consensys 1.3 kernel.  I do not know the status of the other ports.
  8.  
  9. Another poster (Marc Boucher <marc@cam.org>) adds:
  10.  
  11. On ESIX SVR4.0.3 Rev. A, the instruction movsbl in question can be changed to
  12. movzbl (as described above) with a binary-editor on file
  13. /etc/conf/pack.d/kernel/vm.o. At offset 0x11eb0, change 0xbe to 0xb6.
  14.  
  15. Before patching, verify that your /etc/conf/pack.d/kernel/vm.o is the same as
  16. mine!  On my system, the /bin/sum generated checksum of vm.o was "4440 222".
  17.  
  18. The problem results from a sign-extension bug.  The function lfubyte(), which
  19. is called by fubyte(), is declared as
  20.  
  21. int lfubyte(char *addr);    /* actually caddr_t */
  22.  
  23. The byte is fetched with
  24.  
  25.     val = *addr;
  26.  
  27. which triggers sign extension.  Casting addr to a unsigned char * or declaring
  28. it as such solves the problem.
  29.  
  30. This bug is still present in stock USL 4.0.4.  However, it has been fixed in
  31. Dell 2.2.
  32.  
  33. VI. Destiny and Dell
  34.  
  35. A source at at UNIX System Labs Europe claims that `Destiny' (the new Release
  36. 4.2) incorporates all of Dell UNIX's fixes to 4.0.3; thus, any bug for which a
  37. Dell fix is indicated above should be gone in Destiny.
  38. --
  39.     Send your feedback to: Eric Raymond = esr@snark.thyrsus.com
  40. Xref: bloom-picayune.mit.edu comp.mail.uucp:9809 news.answers:3989
  41. Path: bloom-picayune.mit.edu!snorkelwacker.mit.edu!news.media.mit.edu!micro-heart-of-gold.mit.edu!news.bbn.com!usc!zaphod.mps.ohio-state.edu!cs.utexas.edu!uunet!airs!ian
  42. From: ian@airs.com (Ian Lance Taylor)
  43. Newsgroups: comp.mail.uucp,news.answers
  44. Subject: UUCP Internals Frequently Asked Questions
  45. Keywords: UUCP, protocol, FAQ
  46. Message-ID: <uucp-internals_721560602@airs.com>
  47. Date: 12 Nov 92 09:30:11 GMT
  48. Expires: 24 Dec 92 09:30:02 GMT
  49. Sender: news@airs.com
  50. Reply-To: ian@airs.com (Ian Lance Taylor)
  51. Followup-To: comp.mail.uucp
  52. Lines: 1187
  53. Approved: news-answers-request@MIT.Edu
  54. Supersedes: <uucp-internals_719137803@airs.com>
  55.  
  56. Archive-name: uucp-internals
  57. Version: $Revision: 1.10 $
  58. Last-modified: $Date: 1992/10/22 03:55:21 $
  59.  
  60.  This article was written by Ian Lance Taylor <ian@airs.com> and I may
  61.  even update it periodically.  Please send me mail about suggestions
  62.  or inaccuracies.
  63.  
  64.  This article describes how the various UUCP protocols work, and
  65.  discusses some other internal UUCP issues.  It does not describe how
  66.  to configure UUCP, nor how to solve UUCP connection problems, nor how
  67.  to deal with UUCP mail.  There are currently no FAQ postings on any
  68.  of these topics, and I do not plan to write any.
  69.  
  70.  If you haven't read the news.announce.newusers articles, read them.
  71.  
  72.  This article is in digest format.  Some newsreaders will be able to
  73.  break it apart into separate articles.  Please don't ask me how to do
  74.  this, though.
  75.  
  76.  This article answers the following questions.  If one of these
  77.  questions is posted to comp.mail.uucp, please send mail to the poster
  78.  referring her or him to this FAQ.  There is no reason to post a
  79.  followup, as most of us know the answer already.
  80.  
  81. Sources
  82. What does "alarm" mean in debugging output?
  83. What are UUCP grades?
  84. What is the format of a UUCP lock file?
  85. What is the format of a UUCP X.* files?
  86. What is the UUCP protocol?
  87. What is the 'g' protocol?
  88. What is the 'f' protocol?
  89. What is the 't' protocol?
  90. What is the 'e' protocol?
  91. What is the 'G' protocol?
  92. What is the 'x' protocol?
  93. What is the 'd' protocol?
  94. What is the 'h' protocol?
  95. Thanks
  96.  
  97. ----------------------------------------------------------------------
  98.  
  99. From: Sources
  100. Subject: Sources
  101.  
  102. I took a lot of the information from Jamie E. Hanrahan's paper in the
  103. Fall 1990 DECUS Symposium, and from Managing UUCP and Usenet by Tim
  104. O'Reilly and Grace Todino (with contributions by several other
  105. people).  The latter includes most of the former, and is published by
  106.         O'Reilly & Associates, Inc.
  107.         103 Morris Street, Suite A
  108.         Sebastopol, CA 95472
  109. It is currently in its tenth edition.  The ISBN number is
  110. 0-937175-93-5.
  111.  
  112. Some information is originally due to a Usenet article by Chuck
  113. Wegrzyn.  The information on execution files comes partially from
  114. Peter Honeyman.  The information on the 'g' protocol comes partially
  115. from a paper by G.L. Chesson of Bell Laboratories, partially from
  116. Jamie E. Hanrahan's paper, and partially from source code by John
  117. Gilmore.  The information on the 'f' protocol comes from the source
  118. code by Piet Berteema.  The information on the 't' protocol comes from
  119. the source code by Rick Adams.  The information on the 'e' protocol
  120. comes from a Usenet article by Matthias Urlichs.  The information on
  121. the 'd' protocol comes from Jonathan Clark, who also supplied
  122. information about QFT.  The FSUUCP information comes straight from
  123. Christopher J. Ambler.
  124.  
  125. Although there are few books about UUCP, there are many about networks
  126. and protocols in general.  I recommend two non-technical books which
  127. describe the sorts of things that are available on the network: ``The
  128. Whole Internet,'' by Ed Krol, and ``Zen and the Art of the Internet,''
  129. by Brendan P. Kehoe.  Good technical discussions of networking issues
  130. can be found in ``Internetworking with TCP/IP,'' by Douglas E. Comer
  131. and David L. Stevens and in ``Design and Validation of Computer
  132. Protocols'' by Gerard J. Holzmann.
  133.  
  134. ------------------------------
  135.  
  136. From: alarm
  137. Subject: What does "alarm" mean in debugging output?
  138.  
  139. The debugging output of many versions of UUCP (but not Taylor UUCP)
  140. will include messages like
  141.     alarm 1
  142. or
  143.     pkcget: alarm 1
  144.  
  145. This message means that the UUCP package has timed out while waiting
  146. for some sort of response from the remote system.  This normally
  147. indicates some sort of connection problem.  For example, the modems
  148. might have lost their connection, or perhaps one of the modems will
  149. not transmit the XON and XOFF characters, or perhaps one side or the
  150. other is dropping characters.  It can also mean that the packages
  151. disagree about some aspect of the UUCP protocol, although this is less
  152. common.
  153.  
  154. Using the information in the rest of this posting, you should be able
  155. to figure out what type of data your UUCP was expecting to receive.
  156. This may give some indication as to exactly what the problem is.  It
  157. is difficult to be more specific, since there are many possiblities.
  158.  
  159. ------------------------------
  160.  
  161. From: UUCP-grades
  162. Subject: What are UUCP grades?
  163.  
  164. Modern UUCP packages support grades for each command.  The grades
  165. generally range from 'A' (the highest) to 'Z' followed by 'a' to 'z'.
  166. Some UUCP packages also support '0' to '9' before 'A'.  Some UUCP
  167. packages may permit any ASCII character as a grade.
  168.  
  169. On Unix, these grades are encoded in the name of the command file.  A
  170. command file name generally has the form
  171.     C.nnnngssss
  172. where nnnn is the remote system name for which the command is queued,
  173. g is a single character grade, and ssss is a four character sequence
  174. number.  For example, a command file created for the system ``airs''
  175. at grade 'Z' might be named
  176.     C.airsZ2551
  177.  
  178. The remote system name will be truncated to seven characters, to
  179. ensure that the command file name will fit in the 14 character file
  180. name limit of the traditional Unix file system.  UUCP packages which
  181. have no other means of distinguishing which command files are intended
  182. for which systems thus require all systems they connect to to have
  183. names that are unique in the first seven characters.  Some UUCP
  184. packages use a variant of this format which truncates the system name
  185. to six characters.  HDB and Taylor UUCP use a different spool
  186. directory format, which allows up to fourteen characters to be used
  187. for each system name.
  188.  
  189. The sequence number in the command file name may be a decimal integer,
  190. or it may be a hexadecimal integer, or it may contain any alphanumeric
  191. character.  Different UUCP packages are different.
  192.  
  193. FSUUCP (a DOS based UUCP and news package) uses up to 8 characters for
  194. file names in the spool (this is a DOS file name limitation; actually,
  195. with the extension, 11 characters are available, but FSUUCP reserves
  196. that for future use).  FSUUCP defaults mail to grade D, and news to
  197. grade N, except that when the grade of incoming mail can be
  198. determined, that grade is preserved if the mail is forwarded to
  199. another system.  Mail and news are currently the only 2 types of
  200. transfers supported.  The default grades may be changed by editing
  201. the MAIL.RC file for mail, or the FSUUCP.CFG file for news.
  202.  
  203. I do not know how command grades are handled in other non-Unix UUCP
  204. packages.
  205.  
  206. Modern UUCP packages allow you to restrict file transfer by grade
  207. depending on the time of day.  Typically this is done with a line in
  208. the Systems (or L.sys) file like this:
  209.     airs Any/Z,Any2305-0855 ...
  210. This allows grades 'Z' and above to be transferred at any time.  Lower
  211. grades may only be transferred at night.  I believe that this grade
  212. restriction applies to local commands as well as to remote commands,
  213. but I am not sure.  It may only apply if the UUCP package places the
  214. call, not if it is called by the remote system.  Taylor UUCP can use
  215. the ``timegrade'' and ``call-timegrade'' commands to achieve the same
  216. effect (and supports the above format when reading Systems or L.sys).
  217.  
  218. This sort of grade restriction is most useful if you know what grades
  219. are being used at the remote site.  The default grades used depend on
  220. the UUCP package.  Generally uucp and uux have different defaults.  A
  221. particular grade can be specified with the -g option to uucp or uux.
  222. For example, to request execution of rnews on airs with grade 'd', you
  223. might use something like
  224.     uux -gd - airs!rnews <article
  225.  
  226. Uunet queues up mail at grade 'C', but increases the grade based on
  227. the size.  News is queued at grade 'd', and file transfers at grade
  228. 'n'.  The example above would allow mail (below some large size) to be
  229. received at any time, but would only permit news to be transferred at
  230. night.
  231.  
  232. ------------------------------
  233.  
  234. From: UUCP-lock-file
  235. Subject: What is the format of a UUCP lock file?
  236.  
  237. This discussion applies only to Unix.  I have no idea how UUCP locks
  238. ports on other systems.
  239.  
  240. UUCP creates files to lock serial ports and systems.  On most if not
  241. all systems these same lock files are also used by cu to coordinate
  242. access to serial ports.  On some systems getty also uses these lock
  243. files, often under the name uugetty.
  244.  
  245. The lock file normally contains the process ID of the locking process.
  246. This makes it easy to determine whether a lock is still valid.  The
  247. algorithm is to create a temporary file and then link it to the name
  248. that must be locked.  If the link fails because a file with that name
  249. already exists, the existing file is read to get the process ID.  If
  250. the process still exists, the lock attempt fails.  Otherwise the lock
  251. file is deleted and the locking algorithm is retried.
  252.  
  253. Older UUCP packages put the lock files in the main UUCP spool
  254. directory, /usr/spool/uucp.  HDB UUCP generally puts the lock files in
  255. a directory of their own, usually /usr/spool/locks or /etc/locks.
  256.  
  257. The original UUCP lock file format encodes the process ID as a four
  258. byte binary number.  The order of the bytes is host-dependent.  HDB
  259. UUCP stores the process ID as a ten byte ASCII decimal number, with a
  260. trailing newline.  For example, if process 1570 holds a lock file, it
  261. would contain the eleven characters space, space, space, space, space,
  262. space, one, five, seven, zero, newline.  Some versions of UUCP add a
  263. second line indicating which program created the lock (uucp, cu, or
  264. getty/uugetty).  I have also seen a third type of UUCP lock file which
  265. does not contain the process ID at all.
  266.  
  267. The name of the lock file is traditionally "LCK.." followed by the
  268. base name of the device.  For example, to lock /dev/ttyd0 the file
  269. LCK..ttyd0 would be created.  On SCO Unix, the lock file name is
  270. always forced to lower case even if the device name has upper case
  271. letters.
  272.  
  273. System V Release 4 UUCP names the lock file using the major and minor
  274. device numbers rather than the device name.  The file is named
  275. LK.XXX.YYY.ZZZ, where XXX, YYY and ZZZ are all three digit decimal
  276. numbers.  XXX is the major device number of the device holding the
  277. directory holding the device file (e.g., /dev).  YYY is the major
  278. device number of the device file itself.  ZZZ is the minor device
  279. number of the device file itself.  If s holds the result of passing
  280. the device to the stat system call (e.g., stat ("/dev/ttyd0", &s)),
  281. the following line of C code will print out the corresponding lock
  282. file name:
  283.     printf ("LK.%03d.%03d.%03d", major (s.st_dev),
  284.             major (s.st_rdev), minor (s.st_rdev));
  285. The advantage of this system is that even if there are several links
  286. to the same device, they will all use the same lock file name.
  287.  
  288. ------------------------------
  289.  
  290. From: X-file
  291. Subject: What is the format of a UUCP X.* files?
  292.  
  293. UUCP X.* files control program execution.  They are created by uux.
  294. They are transferred between computers just like any other file.  The
  295. uuxqt daemon reads them to figure out how to execute the job requested
  296. by uux.
  297.  
  298. An X.* file is simply a text file.  The first character of each line
  299. is a command, and the remainder of the line supplies arguments.  The
  300. following commands are defined:
  301.     C command
  302.         This gives the command to execute, including the program and
  303.         all arguments.  For example,
  304.             C rmail ian@airs.com
  305.     U user system
  306.         This names the user who requested the command, and the system
  307.         from which the request came.
  308.     I standard-input
  309.         This names the file from which standard input is taken.  If no
  310.         standard input file is given, the standard input will probably
  311.         be attached to /dev/null.  If the standard input file is not
  312.         from the system on which the execution is to occur, it will
  313.         also appear in an F command.
  314.     O standard-output [ system ]
  315.         This names the standard output file.  The optional second
  316.         argument names the system to which the file should be sent.
  317.         If there is no second argument, the file should be created on
  318.         the executing system.
  319.     F required-file [ filename-to-use ]
  320.         The F command can appear multiple times.  Each F command names
  321.         a file which must exist before the execution can proceed.
  322.         This will usually be a file which is transferred from the
  323.         system on which uux was executed, but it can also be a file
  324.         from the local system or some other system.  If the file is
  325.         not from the local system, then the command will usually name
  326.         a file in the spool directory.  If the optional second
  327.         argument appears, then the file should be copied to the
  328.         execution directory under that name.  This is necessary for
  329.         any file other than the standard input file.  If the standard
  330.         input file is not from the local system, it will appear in
  331.         both an F command and an I command.
  332.     R requestor-address
  333.         This is the address to which mail about the job should be
  334.         sent.  It is relative to the system named in the U command.
  335.         If the R command does not appear, then mail is sent to the
  336.         user named in the U command.
  337.     Z
  338.         This command takes no arguments.  It means that a mail message
  339.         should be sent if the command failed.  This is the default
  340.         behaviour for most modern UUCP packages, and for them the Z
  341.         command does not actually do anything.
  342.     N
  343.         This command takes no arguments.  It means that no mail
  344.         message should be sent, even if the command failed.
  345.     n
  346.         This command takes no arguments.  It means that a mail message
  347.         should be sent if the command succeeded.  Normally a message
  348.         is sent only if the command failed.
  349.     B
  350.         This command takes no arguments.  It means that the standard
  351.         input should be returned with any error message.  This can be
  352.         useful in cases where the input would otherwise be lost.
  353.     e
  354.         This command takes no arguments.  It means that the command
  355.         should be processed with /bin/sh.  For some packages this is
  356.         the default anyhow.  Most packages will refuse to execute
  357.         complex commands or commands containing wildcards, because of
  358.         the security holes this opens.
  359.     E
  360.         This command takes no arguments.  It means that the command
  361.         should be processed with the execve system call.  For some
  362.         packages this is the default anyhow.
  363.     M status-file
  364.         This command means that instead of mailing a message, the
  365.         message should be copied to the named file on the system named
  366.         by the U command.
  367.     # comment
  368.         This command is ignored, as is any other unrecognized command.
  369.  
  370. Here is an example.  Given the following command executed on system
  371. test1
  372.     uux - test2!cat - test2!~ian/bar !qux '>~/gorp'
  373. (this is only an example, as most UUCP systems will not permit the cat
  374. command to be executed) Taylor UUCP will produce the following X.
  375. file:
  376.     U ian test1
  377.     F D.test1N003r qux
  378.     O /usr/spool/uucppublic test1
  379.     F D.test1N003s
  380.     I D.test1N003s
  381.     C cat - ~ian/bar qux
  382. The standard input will be read into a file and then transferred to
  383. the file D.test1N003s on system test2, and the file qux will be
  384. transferred to D.test1N003r on system test2.  When the command is
  385. executed, the latter file will be copied to the execution directory
  386. under the name qux.  Note that since the file ~ian/bar is already on
  387. the execution system, no action need be taken for it.  The standard
  388. output will be collected in a file, then copied to the directory
  389. /usr/spool/uucppublic on the system test1.
  390.  
  391. ------------------------------
  392.  
  393. From: UUCP-protocol
  394. Subject: What is the UUCP protocol?
  395.  
  396. The UUCP protocol is a conversation between two UUCP packages.  A UUCP
  397. conversation consists of three parts: an initial handshake, a series
  398. of file transfer requests, and a final handshake.
  399.  
  400. Before the initial handshake, the caller will usually have logged in
  401. the called machine and somehow started the UUCP package there.  On
  402. Unix this is normally done by setting the shell of the login name used
  403. to /usr/lib/uucp/uucico.
  404.  
  405. All messages in the initial handshake begin with a ^P (a byte with the
  406. octal value \020) and end with a null byte (\000).  A few systems end
  407. these messages with a line feed character (\012) instead of a null
  408. byte; the examples below assume a null byte is being used.
  409.  
  410. Some options below are supported by QFT, which stands for Queued File
  411. Transfer, and is (or was) an internal Bell Labs version of UUCP.  Some
  412. are supported by FSUUCP, which is a DOS based UUCP and news package.
  413.  
  414. The initial handshake goes as follows.  It is begun by the called
  415. machine.
  416.  
  417. called: \020Shere=hostname\000
  418.     The hostname is the UUCP name of the called machine.  Older UUCP
  419.     packages do not output it, and simply send \020Shere\000.
  420.  
  421. caller: \020Shostname options\000
  422.     The hostname is the UUCP name of the calling machine.  The
  423.     following options may appear (or there may be none):
  424.         -QSEQ
  425.             Report sequence number for this conversation.  The
  426.             sequence number is stored at both sites, and incremented
  427.             after each call.  If there is a sequence number mismatch,
  428.             something has gone wrong (somebody may have broken
  429.             security by pretending to be one of the machines) and the
  430.             call is denied.  If the sequence number changes on one of
  431.             the machines, perhaps because of an attempted breakin or
  432.             because a disk backup was restored, the sequence numbers
  433.             on the two machines must be reconciled manually.  This is
  434.             not supported by FSUUCP.
  435.         -xLEVEL
  436.             Requests the called system to set its debugging level to
  437.             the specified value.  This is not supported by all
  438.             systems.
  439.         -pGRADE
  440.         -vgrade=GRADE
  441.             Requests the called system to only transfer files of the
  442.             specified grade or higher.  This is not supported by all
  443.             systems.  Some systems support -p, some support -vgrade=.
  444.         -R
  445.             Indicates that the calling UUCP understands how to restart
  446.             failed file transmissions.  Supported only by System V
  447.             Release 4 UUCP and QFT.
  448.         -ULIMIT
  449.             Reports the ulimit value of the calling UUCP.  The limit
  450.             is specified as a base 16 number in C notation (e.g.,
  451.             -U0x1000000).  This number is the number of 512 byte
  452.             blocks in the largest file which the calling UUCP can
  453.             create.  The called UUCP may not transfer a file larger
  454.             than this.  Supported only by System V Release 4 UUCP, QFT
  455.             and FSUUCP.  FSUUCP reports the lesser of the
  456.             available disk space on the spool directory drive and the
  457.             ulimit variable in FSUUCP.CFG.
  458.         -N
  459.             Indicates that the calling UUCP understands the Taylor
  460.             UUCP size limiting extensions.  Supported only by Taylor
  461.             UUCP and FSUUCP.
  462.  
  463. called: \020ROK\000
  464.     There are actually several possible responses.
  465.         ROK
  466.             The calling UUCP is acceptable, and the handshake proceeds
  467.             to the protocol negotiation.  Some options may also
  468.             appear; see below.
  469.         ROKN
  470.             The calling UUCP is acceptable, it specified -N, and the
  471.             called UUCP also understands the Taylor UUCP size limiting
  472.             extensions.  Supported only by Taylor UUCP and FSUUCP.
  473.         RLCK
  474.             The called UUCP already has a lock for the calling UUCP,
  475.             which normally indicates the two machines are already
  476.             communicating.
  477.         RCB
  478.             The called UUCP will call back.  This may be used to avoid
  479.             impostors (but only one machine out of each pair should
  480.             call back, or no conversation will ever begin).
  481.         RBADSEQ
  482.             The call sequence number is wrong (see the -Q discussion
  483.             above).
  484.         RLOGIN
  485.             The calling UUCP is using the wrong login name.
  486.         RYou are unknown to me
  487.             The calling UUCP is not known to the called UUCP, and the
  488.             called UUCP does not permit connections from unknown
  489.             systems.  Some versions of UUCP just drop the line rather
  490.             than sending this message.
  491.  
  492.     If the response is ROK, the following options are supported by
  493.     System V Release 4 UUCP and QFT.
  494.         -R
  495.             The called UUCP knows how to restart failed file
  496.             transmissions.
  497.         -ULIMIT
  498.             Reports the ulimit value of the called UUCP.  The limit is
  499.             specified as a base 16 number in C notation.  This number
  500.             is the number of 512 byte blocks in the largest file which
  501.             the called UUCP can create.  The calling UUCP may not send
  502.             a file larger than this.  Also supported by FSUUCP.
  503.         -xLEVEL
  504.             I'm not sure just what this means.  It may request the
  505.             calling UUCP to set its debugging level to the specified
  506.             value.
  507.     If the response is not ROK (or ROKN) both sides hang up the phone,
  508.     abandoning the call.
  509.  
  510. called: \020Pprotocols\000
  511.     Note that the called UUCP outputs two strings in a row.  The
  512.     protocols string is a list of UUCP protocols supported by the
  513.     caller.  Each UUCP protocol has a single character name.  These
  514.     protocols are discussed in more detail later in this document.
  515.     For example, the called UUCP might send \020Pgf\000.
  516.  
  517. caller: \020Uprotocol\000
  518.     The calling UUCP selects which protocol to use out of the
  519.     protocols offered by the called UUCP.  If there are no mutually
  520.     supported protocols, the calling UUCP sends \020UN\000 and both
  521.     sides hang up the phone.  Otherwise the calling UUCP sends
  522.     something like \020Ug\000.
  523.  
  524. Most UUCP packages will consider each locally supported protocol in
  525. turn and select the first one supported by the called UUCP.  With some
  526. versions of HDB UUCP, this can be modified by giving a list of
  527. protocols after the device name in the Devices file or the Systems
  528. file.  For example, to select the 'e' protocol in Systems,
  529.     airs Any ACU,e ...
  530. or in Devices,
  531.     ACU,e ttyXX ...
  532. Taylor UUCP provides the ``protocol'' command which may be used either
  533. for a system or a port.
  534.  
  535. After the protocol has been selected and the initial handshake has been
  536. completed, both sides turn on the selected protocol.  For some
  537. protocols (notably 'g') a further handshake is done at this point.
  538.  
  539. Each protocol supports a method for sending a command to the remote
  540. system.  This method is used to transmit a series of commands between
  541. the two UUCP packages.  At all times, one package is the master and
  542. the other is the slave.  Initially, the calling UUCP is the master.
  543.  
  544. If a protocol error occurs during the exchange of commands, both sides
  545. move immediately to the final handshake.
  546.  
  547. The master will send one of four commands: S, R, X or H.
  548.  
  549. Any file name referred to below is either an absolute pathname
  550. beginning with "/", a public directory pathname beginning with "~/", a
  551. pathname relative to a user's home directory beginning with "~USER/",
  552. or a spool directory file name.  File names in the spool directory are
  553. not pathnames, but instead are converted to pathnames within the spool
  554. directory by UUCP.  They always begin with "C." (for a command file
  555. created by uucp or uux), "D." (for a data file created by uucp, uux or
  556. by an execution, or received from another system for an execution), or
  557. "X." (for an execution file created by uux or received from another
  558. system).
  559.  
  560. master: S FROM TO USER -OPTIONS TEMP MODE NOTIFY SIZE
  561.     The S and the - are literal characters.  This is a request by the
  562.     master to send a file to the slave.
  563.         FROM
  564.             The name of the file to send.  If the C option does not
  565.             appear in OPTIONS, the master will actually open and send
  566.             this file.  Otherwise the file has been copied to the
  567.             spool directory, where it is named TEMP.  The slave
  568.             ignores this field unless TO is a directory, in which case
  569.             the basename of FROM will be used as the file name.  If
  570.             FROM is a spool directory filename, it must be a data file
  571.             created for or by an execution, and must begin with "D.".
  572.         TO
  573.             The name to give the file on the slave.  If this field
  574.             names a directory the file is placed within that directory
  575.             with the basename of FROM.  A name ending in `/' is taken
  576.             to be a directory even if one does not already exist with
  577.             that name.  If TO begins with `X.', an execution file will
  578.             be created on the slave.  Otherwise, if TO begins with
  579.             `D.' it names a data file to be used by some execution
  580.             file.  Otherwise, TO should not be in the spool directory.
  581.         USER
  582.             The name of the user who requested the transfer.
  583.         OPTIONS
  584.             A list of options to control the transfer.  The following
  585.             options are defined (all options are single characters):
  586.                 C
  587.                     The file has been copied to the spool directory
  588.                     (the master should use TEMP rather than FROM).
  589.                 c
  590.                     The file has not been copied to the spool
  591.                     directory (this is the default).
  592.                 d
  593.                     The slave should create directories as necessary
  594.                     (this is the default).
  595.                 f
  596.                     The slave should not create directories if
  597.                     necessary, but should fail the transfer instead.
  598.                 m
  599.                     The master should send mail to USER when the
  600.                     transfer is complete (not supported by FSUUCP).
  601.                 n
  602.                     The slave should send mail to NOTIFY when the
  603.                     transfer is complete (not supported by FSUUCP).
  604.         TEMP
  605.             If the C option appears in OPTIONS, this names the file to
  606.             be sent.  Otherwise if FROM is in the spool directory,
  607.             TEMP is the same as FROM.  Otherwise TEMP may be a dummy
  608.             string, such as "D.0".  After the transfer has been
  609.             succesfully completed, the master will delete the file
  610.             TEMP.
  611.         MODE
  612.             This is an octal number giving the mode of the file on
  613.             MASTER.  If the file is not in the spool directory, the
  614.             slave will always create it with mode 0666, except that if
  615.             (MODE & 0111) is not zero (the file is executable), the
  616.             slave will create the file with mode 0777.  If the file is
  617.             in the spool directory, some UUCP packages will use the
  618.             algorithm above and some will always create the file with
  619.             mode 0600.  This field is not used by FSUUCP, since it is
  620.             meaningless on DOS.
  621.         NOTIFY
  622.             This field may not be present, and in any case is only
  623.             meaningful if the n option appears in OPTIONS.  If the n
  624.             option appears, then when the transfer is successfully
  625.